#include <vector>
#include <iostream>
using namespace std;

void q_sort(vector<int> &nums, int left, int right)
{
    if (left >= right)
        return;
    int keyi = left;
    int begin = left, end = right;
    while (begin < end)
    {
        //两边都是严格找比基准值小的大的进行交换 此时那么keyi的位置不会发送改变
        // 找小的值
        while (begin < end && nums[end] >= nums[keyi])
            end--;
        //此时刚开始一定会进行我们的跳过我们的keyi
        while (begin < end && nums[begin] <= nums[keyi])
            begin++;
        swap(nums[begin], nums[end]);
    }
    // 一趟排序后把基准值放到这里
    swap(nums[end], nums[keyi]);
    q_sort(nums, left, begin-1);
    q_sort(nums, begin + 1, right);
}
void quickSort(std::vector<int> &nums)
{
    q_sort(nums, 0, nums.size() - 1);
}
int main()
{
    int n;
    cin >> n;
    vector<int> arr(n, 0);
    for (auto &ch : arr)
    {
        cin >> ch;
    };
    quickSort(arr);
    for (auto &ch : arr)
    {
        cout << ch << " ";
    };
    return 0;
}